package com.coded2.mobileposto.model;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;

import org.codehaus.jackson.annotate.JsonIgnore;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;


/**
 * The persistent class for the posto database table.
 * 
 */
@Entity
@NamedQuery(name="Posto.findAll", query="SELECT p FROM Posto p")
public class Posto extends com.coded2.infra.comum.ComumDTO  {
	
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="id_posto")
	private int idPosto;			

	
	//bi-directional many-to-one association to Distribuidor
	@ManyToOne
	@JoinColumn(name="id_distruibuidor")
	private Distribuidor distribuidor;
	
	@Column(name="no_posto")
	private String noPosto;
	
	@Column(name="lat")
	private BigDecimal lat;

	@Column(name="lon")
	private BigDecimal lon;
	
	@Column(name="uf")
	private String uf;
	
	@Column(name="cidade")
	private String cidade;
	
	@Column(name="bairro")
	private String bairro;

	@Column(name="ddd")
	private String ddd;

	@Column(name="telefone")
	private BigDecimal telefone;
	
	@Column(name="ic_ativo")
	private String icAtivo;

	@Column(name="email")
	private String email;

	//bi-directional many-to-one association to PostoCombustivel
	@OneToMany(mappedBy="posto")
	private List<PostoCombustivel> postoCombustivels;

	//bi-directional many-to-many association to Servico
	@ManyToMany(mappedBy="postos")
	private List<Servico> servicos;

	public Posto() {
	}

	public int getIdPosto() {
		return this.idPosto;
	}

	public void setIdPosto(int idPosto) {
		this.idPosto = idPosto;
	}

	public String getBairro() {
		return this.bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getCidade() {
		return this.cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

	public String getDdd() {
		return this.ddd;
	}

	public void setDdd(String ddd) {
		this.ddd = ddd;
	}

	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getIcAtivo() {
		return this.icAtivo;
	}

	public void setIcAtivo(String icAtivo) {
		this.icAtivo = icAtivo;
	}

	public BigDecimal getLat() {
		return this.lat;
	}

	public void setLat(BigDecimal lat) {
		this.lat = lat;
	}

	public BigDecimal getLon() {
		return this.lon;
	}

	public void setLon(BigDecimal lon) {
		this.lon = lon;
	}

	public String getNoPosto() {
		return this.noPosto;
	}

	public void setNoPosto(String noPosto) {
		this.noPosto = noPosto;
	}

	public BigDecimal getTelefone() {
		return this.telefone;
	}

	public void setTelefone(BigDecimal telefone) {
		this.telefone = telefone;
	}

	public String getUf() {
		return this.uf;
	}

	public void setUf(String uf) {
		this.uf = uf;
	}

	public Distribuidor getDistribuidor() {
		if (distribuidor == null) {
			distribuidor = new Distribuidor();
		}
		return this.distribuidor;
	}

	public void setDistribuidor(Distribuidor distribuidor) {
		this.distribuidor = distribuidor;
	}

	public List<PostoCombustivel> getPostoCombustivels() {
		if (postoCombustivels == null) {
			postoCombustivels = new ArrayList<PostoCombustivel>();
		}
		return postoCombustivels;
	}

	public void setPostoCombustivels(List<PostoCombustivel> postoCombustivels) {
		this.postoCombustivels = postoCombustivels;
	}

	public PostoCombustivel addPostoCombustivel(PostoCombustivel postoCombustivel) {
		getPostoCombustivels().add(postoCombustivel);
		postoCombustivel.setPosto(this);

		return postoCombustivel;
	}

	public PostoCombustivel removePostoCombustivel(PostoCombustivel postoCombustivel) {
		getPostoCombustivels().remove(postoCombustivel);
		postoCombustivel.setPosto(null);

		return postoCombustivel;
	}

	public List<Servico> getServicos() {
		if (servicos == null) {
			servicos = new ArrayList<Servico>();
		}
		return servicos;
	}

	public void setServicos(List<Servico> servicos) {
		this.servicos = servicos;
	}

	@Override
	@JsonIgnore
	public Object getId() {
		return getIdPosto();
	}

}